{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Gaussian Mixture Model with ADVI"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here, we describe how to use ADVI for inference of Gaussian mixture model. First, we will show that inference with ADVI does not need to modify the stochastic model, just call a function. Then, we will show how to use mini-batch, which is useful for large dataset. In this case, where the model should be slightly changed. \n",
    "\n",
    "First, create artificial data from a mixuture of two Gaussian components.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "env: THEANO_FLAGS=device=cpu,floatX=float32\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x1c1cb53f98>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "%env THEANO_FLAGS=device=cpu,floatX=float32\n",
    "import theano\n",
    "\n",
    "import pymc3 as pm\n",
    "from pymc3 import Normal, Metropolis, sample, MvNormal, Dirichlet, \\\n",
    "    DensityDist, find_MAP, NUTS, Slice\n",
    "import theano.tensor as tt\n",
    "from theano.tensor.nlinalg import det\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "n_samples = 100\n",
    "rng = np.random.RandomState(123)\n",
    "ms = np.array([[-1, -1.5], [1, 1]])\n",
    "ps = np.array([0.2, 0.8])\n",
    "\n",
    "zs = np.array([rng.multinomial(1, ps) for _ in range(n_samples)]).T\n",
    "xs = [z[:, np.newaxis] * rng.multivariate_normal(m, np.eye(2), size=n_samples)\n",
    "      for z, m in zip(zs, ms)]\n",
    "data = np.sum(np.dstack(xs), axis=2)\n",
    "\n",
    "plt.figure(figsize=(5, 5))\n",
    "plt.scatter(data[:, 0], data[:, 1], c='g', alpha=0.5)\n",
    "plt.scatter(ms[0, 0], ms[0, 1], c='r', s=100)\n",
    "plt.scatter(ms[1, 0], ms[1, 1], c='b', s=100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Gaussian mixture models are usually constructed with categorical random variables. However, any discrete rvs does not fit ADVI. Here, class assignment variables are marginalized out, giving weighted sum of the probability for the gaussian components. The log likelihood of the total probability is calculated using logsumexp, which is a standard technique for making this kind of calculation stable. \n",
    "\n",
    "In the below code, DensityDist class is used as the likelihood term. The second argument, logp_gmix(mus, pi, np.eye(2)), is a python function which recieves observations (denoted by 'value') and returns the tensor representation of the log-likelihood. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pymc3.math import logsumexp\n",
    "\n",
    "# Log likelihood of normal distribution\n",
    "def logp_normal(mu, tau, value):\n",
    "    # log probability of individual samples\n",
    "    k = tau.shape[0]\n",
    "    delta = lambda mu: value - mu\n",
    "    return (-1 / 2.) * (k * tt.log(2 * np.pi) + tt.log(1./det(tau)) +\n",
    "                         (delta(mu).dot(tau) * delta(mu)).sum(axis=1))\n",
    "\n",
    "# Log likelihood of Gaussian mixture distribution\n",
    "def logp_gmix(mus, pi, tau):\n",
    "    def logp_(value):        \n",
    "        logps = [tt.log(pi[i]) + logp_normal(mu, tau, value)\n",
    "                 for i, mu in enumerate(mus)]\n",
    "            \n",
    "        return tt.sum(logsumexp(tt.stacklists(logps)[:, :n_samples], axis=0))\n",
    "\n",
    "    return logp_\n",
    "\n",
    "with pm.Model() as model:\n",
    "    mus = [MvNormal('mu_%d' % i, \n",
    "                    mu=pm.floatX(np.zeros(2)), \n",
    "                    tau=pm.floatX(0.1 * np.eye(2)), \n",
    "                    shape=(2,))\n",
    "           for i in range(2)]\n",
    "    pi = Dirichlet('pi', a=pm.floatX(0.1 * np.ones(2)), shape=(2,))\n",
    "    xs = DensityDist('x', logp_gmix(mus, pi, np.eye(2)), observed=data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For comparison with ADVI, run MCMC. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "with model:\n",
    "    start = find_MAP()\n",
    "    step = Metropolis()\n",
    "    trace = sample(1000, step, start=start)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Check posterior of component means and weights. We can see that the MCMC samples of the component mean for the lower-left component varied more than the upper-right due to the difference of the sample size of these clusters. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-6, 6)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(5, 5))\n",
    "plt.scatter(data[:, 0], data[:, 1], alpha=0.5, c='g')\n",
    "mu_0, mu_1 = trace['mu_0'], trace['mu_1']\n",
    "plt.scatter(mu_0[:, 0], mu_0[:, 1], c=\"r\", s=10)\n",
    "plt.scatter(mu_1[:, 0], mu_1[:, 1], c=\"b\", s=10)\n",
    "plt.xlim(-6, 6)\n",
    "plt.ylim(-6, 6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1c1fa21c50>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.barplot([1, 2], np.mean(trace['pi'][:], axis=0), \n",
    "            palette=['red', 'blue'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can use the same model with ADVI as follows. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "with pm.Model() as model:\n",
    "    mus = [MvNormal('mu_%d' % i, mu=pm.floatX(np.zeros(2)), tau=pm.floatX(0.1 * np.eye(2)), shape=(2,))\n",
    "           for i in range(2)]\n",
    "    pi = Dirichlet('pi', a=pm.floatX(0.1 * np.ones(2)), shape=(2,))\n",
    "    xs = DensityDist('x', logp_gmix(mus, pi, np.eye(2)), observed=data)\n",
    "\n",
    "with model:\n",
    "    %time approx = pm.fit(n=4500, obj_optimizer=pm.adagrad(learning_rate=1e-1))\n",
    "    \n",
    "means = approx.bij.rmap(approx.mean.eval())\n",
    "cov = approx.cov.eval()\n",
    "sds = approx.bij.rmap(np.diag(cov)**.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The function returns three variables. 'means' and 'sds' are the mean and standart deviations of the variational posterior. Note that these values are in the transformed space, not in the original space. For random variables in the real line, e.g., means of the Gaussian components, no transformation is applied. Then we can see the variational posterior in the original space. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-6, 6)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from copy import deepcopy\n",
    "\n",
    "mu_0, sd_0 = means['mu_0'], sds['mu_0']\n",
    "mu_1, sd_1 = means['mu_1'], sds['mu_1']\n",
    "\n",
    "def logp_normal_np(mu, tau, value):\n",
    "    # log probability of individual samples\n",
    "    k = tau.shape[0]\n",
    "    delta = lambda mu: value - mu\n",
    "    return (-1 / 2.) * (k * np.log(2 * np.pi) + np.log(1./np.linalg.det(tau)) +\n",
    "                         (delta(mu).dot(tau) * delta(mu)).sum(axis=1))\n",
    "\n",
    "def threshold(zz):    \n",
    "    zz_ = deepcopy(zz)\n",
    "    zz_[zz < np.max(zz) * 1e-2] = None\n",
    "    return zz_\n",
    "\n",
    "def plot_logp_normal(ax, mu, sd, cmap):\n",
    "    f = lambda value: np.exp(logp_normal_np(mu, np.diag(1 / sd**2), value))\n",
    "    g = lambda mu, sd: np.arange(mu - 3, mu + 3, .1)\n",
    "    xx, yy = np.meshgrid(g(mu[0], sd[0]), g(mu[1], sd[1]))\n",
    "    zz = f(np.vstack((xx.reshape(-1), yy.reshape(-1))).T).reshape(xx.shape)\n",
    "    ax.contourf(xx, yy, threshold(zz), cmap=cmap, alpha=0.9)\n",
    "           \n",
    "fig, ax = plt.subplots(figsize=(5, 5))\n",
    "plt.scatter(data[:, 0], data[:, 1], alpha=0.5, c='g')\n",
    "plot_logp_normal(ax, mu_0, sd_0, cmap='Reds')\n",
    "plot_logp_normal(ax, mu_1, sd_1, cmap='Blues')\n",
    "plt.xlim(-6, 6)\n",
    "plt.ylim(-6, 6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "TODO: We need to backward-transform 'pi', which is transformed by 'stick_breaking'. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "'elbos' contains the trace of ELBO, showing stochastic convergence of the algorithm. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1c1fd5fa90>]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8VNX9//HXhx2URSEoJUBEqKgoLilSd1GLotV+v2pLv7Zaq6Vfa1ur3yqorba2dWndWn+tS7UttmrdWxpARRAVlSXsO4Q1YUvYAiEkJJnP74+5CZN1JsuQzOT9fDzy4N5zz9w5c4H3nJx77r3m7oiISPJq09wNEBGR+FLQi4gkOQW9iEiSU9CLiCQ5Bb2ISJJT0IuIJDkFvYhIklPQi4gkOQW9iEiSa9fcDQDo1auXp6WlNXczREQSyrx583a4e0q0ei0i6NPS0sjMzGzuZoiIJBQz2xhLPQ3diIgkOQW9iEiSU9CLiCQ5Bb2ISJJT0IuIJDkFvYhIklPQi4gkuYQOenfnjcxsikvLmrspIiItVkIH/XvLtnPXm4t5cuqa5m6KiEiLldBBv7eoBIAdBcXN3BIRkZYroYNeRESiiznozaytmS0ws4xg3czsN2a22sxWmNmPI8r/YGZZZrbYzM6IV+NFRCS6+tzU7HZgBdAtWP8O0A8Y4u4hM+sdlF8ODA5+zgKeCf4UEZFmEFOP3sxSgSuAFyKKbwUedPcQgLvnBuVXAy952Cygh5n1acI2H+Jx2auISFKJdejmKeBuIBRRdjzwDTPLNLMpZjY4KO8LZEfUywnK4sbiuXMRkQQXNejN7Eog193nVdnUEShy93Tgz8Bfyl9Sw26q9b3NbGzwJZGZl5dXz2aLiEisYunRnwNcZWYbgH8CI83sH4R76m8Fdd4BTg2WcwiP3ZdLBbZU3am7P+/u6e6enpIS9QEpddIIjohI7aIGvbvf4+6p7p4GjAGmu/u3gH8BI4NqFwCrg+WJwA3B7JsRQL67b236pqMxGxGRGDTmUYKPAC+b2R1AAXBLUD4ZGA1kAYXATY1qYV3UlRcRiapeQe/uM4AZwfIewjNxqtZx4LYmaFvM1LEXEamdrowVEUlyCnoRkSSnoBcRSXIKehGRJJfQQe+adiMiElVCB72IiESX0EFvmlgpIhJVQge9iIhEp6AXEUlyCR30OhkrIhJdQgd9OdNQvYhIrZIi6EVEpHYKehGRJJcUQe8aqhcRqVVSBL2IiNQuKYJeJ2NFRGqXFEEvIiK1U9CLiCQ5Bb2ISJKLOejNrK2ZLTCzjCrlT5tZQcR6RzN7zcyyzGy2maU1XXNFRKS+6tOjvx1YEVlgZulAjyr1bgZ2u/sg4Eng0Ua1sA77i8sATa8UEalLTEFvZqnAFcALEWVtgd8Bd1epfjUwIVh+E7jYLD7zYv4xayMAB0rK4rF7EZGkEGuP/inCgR6KKPshMNHdt1ap2xfIBnD3UiAf6Fl1h2Y21swyzSwzLy+v3g0P76RhLxMRaU2iBr2ZXQnkuvu8iLIvANcBT9f0khrKqg2uuPvz7p7u7ukpKSn1aLKIiNRHuxjqnANcZWajgU5AN2AZUAxkBaMyXcwsKxiXzwH6ATlm1g7oDuyKR+NFRCS6qD16d7/H3VPdPQ0YA0x396Pc/Vh3TwvKC4OQB5gI3BgsXxvUj8/pUp2EFRGJKpYefX29CPzdzLII9+THxOE9REQkRvUKenefAcyoofzIiOUiwuP38aeTsSIiUenKWBGRJKegFxFJcgp6EZEkp6AXEUlySRH0mmUpIlK7hA56TboREYkuoYNeRESiU9CLiCS5hA56jc2LiESX0EEvIiLRJXTQV5yMVddeRKRWiR308XlwlYhIUknooC83aUnVh1yJiEi5hA76eN3mXkQkmSR00IuISHQKehGRJJfQQa+TsSIi0SV00IuISHQxB72ZtTWzBWaWEay/bGarzGypmf3FzNoH5WZmfzCzLDNbbGZnxKvxOhkrIhJdfXr0twMrItZfBoYApwCdgVuC8suBwcHPWOCZxjdTREQaKqagN7NU4ArghfIyd5/sAWAOkBpsuhp4Kdg0C+hhZn2auN3l7YrHbkVEkkqsPfqngLuBUNUNwZDNt4F3g6K+QHZElZygrOrrxppZppll5uXl1avRIiISu6hBb2ZXArnuPq+WKn8CPnb3T8pfUkOdaoPp7v68u6e7e3pKSkrMDa7Utga9SkSkdWkXQ51zgKvMbDTQCehmZv9w92+Z2QNACvD9iPo5QL+I9VRgS1M1WERE6idqj97d73H3VHdPA8YA04OQvwUYBXzT3SOHdCYCNwSzb0YA+e4el5vRaM6NiEh0sfToa/MssBH4PDgp+ra7PwhMBkYDWUAhcFNjGykiIg1Xr6B39xnAjGC5xtcGs3Bua2zDRESkaST0lbGRJ2O/9cJsFmXvaba2iIi0VIkd9BFJPzNrB+PeWtx8jRERaaESOuh1BwQRkegSOuhFRCQ6Bb2ISJJL6KAv09iNiEhUCR30O/YVV1pfuW1fM7VERKTlSuigr6k/P2/jrsPeDhGRliyhg76mm5rtLDh42NshItKSJXbQ6370IiJRJXTQ10ThLyJSWUIHvTJdRCS6hA56ERGJTkEvIpLkki7oNZojIlJZ0gW9iIhUlnRBrxO0IiKVJXTQK9NFRKKLOejNrK2ZLTCzjGD9ODObbWZrzOw1M+sQlHcM1rOC7WnxabrmzIuIxKI+PfrbgRUR648CT7r7YGA3cHNQfjOw290HAU8G9eLCdfdKEZGoYgp6M0sFrgBeCNYNGAm8GVSZAHwtWL46WCfYfrEdxq739r3FbN5z4HC9nYhIixdrj/4p4G4gFKz3BPa4e2mwngP0DZb7AtkAwfb8oH6Tq+n74953lnDOI9Pj8XYiIgkpatCb2ZVArrvPiyyuoarHsC1yv2PNLNPMMvPy8mJqrIiI1F8sPfpzgKvMbAPwT8JDNk8BPcysXVAnFdgSLOcA/QCC7d2BajeJd/fn3T3d3dNTUlIa1HidihURiS5q0Lv7Pe6e6u5pwBhgurtfD3wIXBtUuxH4d7A8MVgn2D7dddZURKTZNGYe/TjgTjPLIjwG/2JQ/iLQMyi/ExjfuCbWTt8eIiLRtYte5RB3nwHMCJbXAcNrqFMEXNcEbYtKQzciItEl9JWxIiISnYJeRCTJKehFRJJcQge9TsaKiESX0EEvIiLRKehFRJKcgl5EJMkp6EVEklxCB70umBIRiS6hg15ERKJL6KDX9EoRkegSOuhFRCQ6Bb2ISJJT0IuIJLmEDno9z0REJLqEDvr6CIVcXwwi0iolbdDf+o95lIUOBfvAeydz7ztLm7FFIiLNI6GDvq7++ZSl29iaf6BS2atzNsW3QSIiLVDUoDezTmY2x8wWmdkyM/tlUH6xmc03s4VmNtPMBgXlHc3sNTPLMrPZZpYW348gIiJ1iaVHXwyMdPdhwGnAZWY2AngGuN7dTwNeAX4W1L8Z2O3ug4AngUebvtmxMdNNEkREoga9hxUEq+2DHw9+ugXl3YEtwfLVwIRg+U3gYotT4urcqohIdO1iqWRmbYF5wCDgj+4+28xuASab2QFgLzAiqN4XyAZw91Izywd6AjuauvGaRSMiEl1MJ2PdvSwYokkFhpvZUOAOYLS7pwJ/BZ4IqtfUe6+WyGY21swyzSwzLy+vQY1XzIuIRFevWTfuvgeYAVwODHP32cGm14Czg+UcoB+AmbUjPKyzq4Z9Pe/u6e6enpKS0rDWi4hIVLHMukkxsx7BcmfgEmAF0N3MvhhUuzQoA5gI3BgsXwtM9ziNscQ68K8hHhFpzWIZo+8DTAjG6dsAr7t7hpl9D3jLzELAbuC7Qf0Xgb+bWRbhnvyYOLQbiD50U/5FoJwXkdYsatC7+2Lg9BrK3wHeqaG8CLiuSVoXTYwBrpwXkdYsoa+MFRGR6BI66KMO3QRjNxqjF5HWLKGDPlaKeRFpzRI66GPtqatDLyKtWUIHfWkoxqBXn15EWrGEDvqyWINeOS8irVhCB32sPXoRkdYsoYN+YK8j6txuwSVT6tGLSGuW0EH/4NVD69y+bkcBaeMnMWdDtVvtiIi0Ggkd9J3a1938z7J2AvDvhZsPR3NERFqkhA76aOI122baiu28PT8nLvsWEWlqMT14JOE1cd7fPCETgP8+I7VpdywiEgcJ3aOPlt/lJ2H3HyyNe1tERFqqhA76WL23bHvUOk9PW8OlT3x0GFojInJ4JXTQR3vwSLQe/7yNu8nK3QfA41NXsya3gA079vPrjOW6EZqIJI2EDvpoasrqopKyiuVrnvmMS574uNL2sX/P5IWZ61mbVxDv5omIHBYJHfTR+tzPfrS2WtncYE59ZOBHKr+tgjr0IpIsEjroG2PM87NqLDeL9Um0IiKJodUFfXlPfWH2nrrrHYa2iIgcDlGD3sw6mdkcM1tkZsvM7JdBuZnZb8xstZmtMLMfR5T/wcyyzGyxmZ0R7w9RX5l13BJB/XkRSTaxXDBVDIx09wIzaw/MNLMpwIlAP2CIu4fMrHdQ/3JgcPBzFvBM8GeLsHLbXh6avLJS2aadhc3UGhGR+Isa9B6eZ1g+BaV98OPArcD/uHsoqJcb1LkaeCl43Swz62Fmfdx9a1M3viEnTHcWHKxWdv7vPmyC1oiItEwxjdGbWVszWwjkAlPdfTZwPPANM8s0sylmNjio3hfIjnh5TlBWdZ9jg9dm5uXlNe5T1MOinLrH5stp1o2IJIuYgt7dy9z9NCAVGG5mQ4GOQJG7pwN/Bv4SVK9pmLtabLr78+6e7u7pKSkpDWp8QybIzFpX9y2LNelGRJJNvWbduPseYAZwGeGe+lvBpneAU4PlHMJj9+VSgS2NamUz0HNmRSRZxDLrJsXMegTLnYFLgJXAv4CRQbULgNXB8kTghmD2zQggPx7j8yIiEptYZt30ASaYWVvCXwyvu3uGmc0EXjazOwifrL0lqD8ZGA1kAYXATU3f7DCNo4uIRBfLrJvFwOk1lO8Brqih3IHbmqR1zcA0k15EkkyruzI2VkUlIUrKQs3dDBGRRlPQV1E+6+Zrf/yUr/3x0+ZtjIhIE0jooO/SoW1c979sy9647l9E5HBI6KAf2rd7czdBRKTFS+igj4eV2/ZVWn/8/VW13rteRCQRKOijeHp6Fs99tK65myEi0mAK+hgUlapHLyKJS0Efg1guzCrVVEwRaaEU9DHI3lX3/eqnr9zOoPumsHRz/mFqkYhI7BT0MZi0ZCvrd+xncS23OJ62Inwr/gWbdh/OZomIxCSWe90IcNFjMwB44Yb0atvKL7LSrXdEpCVSj76ebnkps1pZ+f1xdJM1EWmJEj7o4311bCz2FZUA4FWS/mBpiAmfbaAspG8AEWk+GrpppJXb9vKvheHnqlSN8+c+WsvjU1fToV0bvjm8/+FvnIgISdCjb26rIq6krTp0s7sw3NPfX1x6OJskIlJJwgd9SxoXr9oUPY5QRFqCxA/6ZgzTbflFdW4v/xIyPXFcRJpRwgd9cxrx8DTeXbqtYj13X83Br5gXkeYUy8PBO5nZHDNbZGbLzOyXVbY/bWYFEesdzew1M8sys9lmltb0zT6ke+f28dx9VFMigr7qzc/KZ+G0UdKLSDOKpUdfDIx092HAacBlZjYCwMzSgR5V6t8M7Hb3QcCTwKNN2N5q2rSwYZFt+UWkjZ9E5oZdhDR0IyItQNSg97DyHnv74MfNrC3wO+DuKi+5GpgQLL8JXGxxTLqUrh3jtesGefz9VQC89PnGivMHynkRaU4xjdGbWVszWwjkAlPdfTbwQ2Ciu2+tUr0vkA3g7qVAPtCzhn2ONbNMM8vMy8tr8Ad44YZ0LjwhpcGvb2pTV2wHoCzk1U7GFpWU8exHa3WnSxE5rGIKencvc/fTgFRguJmdD1wHPF1D9Zr6r9Wmxrj78+6e7u7pKSkND+re3TrxjfR+Feu/vOrkBu+rKewJ5s5PWrKVl2dvAg4dkD9+mMUjU1byxrwcNu7czxuZ2c3UShFpTeo168bd9wAzgIuAQUCWmW0AuphZVlAtB+gHYGbtgO7AriZqb40ih0ZuPDstnm/VIOXt21cUvnDqwMEyrv7jp9z15uJmbJWItBaxzLpJMbMewXJn4BJgnrsf6+5p7p4GFAYnXwEmAjcGy9cC073qTWCa2KDeXeO5+0YrLC6rdAUtHOr5x/nQiIjE1KPvA3xoZouBuYTH6DPqqP8i0DPo4d8JjG98M+s2qPeR8X6LRvnN5BWMeurjGrc1NOc37NjPrv0HG9EqEWktYpl1s9jdT3f3U919qLs/WEOdIyOWi9z9Oncf5O7D3f2wP1l79r0X88VjWm74Rw413fbKfAoacC+cCx+bwQW//bAJWyUiySopr4w9plsn7rz0hIr15759ZjO25pCdQQ98UfahJ1VNWbqNt+bl4O78Z9EWDpZWn5GzaWch7y/bVq18n26WJiIxSMqgB7hs6LEV96o/Z1CvZm5N2H8WhW9nXH5b43JZuQXMWJ3Hj15dwBNTV1d73Vee+oixf593WNooIsknaYL+r9/5EneNOqFSWfk94Du0jf1j/vprQ5u0XbH4+6yN7A56+1OXV++5F5VU7uVPC+bqA+TuLeLDVbnxbaCIJLSkCfqLhvTmtosGVSq7b/SJrPzVZXRoV/lj/uU76Yy7bAi9jqx+Ve2YL/WrVnY4ZO86AMDavP0AnPXQB9z5+sJKdTbu3M8/Zm3k5gmHHmf43898xk1/nXv4GioiCSepnzDVpo3RqU31Rw2OHHIMI4ccw7e/PIChD7xXUX5Ul/a0q0fvvyk9+UHlIZvte4t5e/5mLjv52IqyK/8ws9q4fM7u8BeEu+ueOiJSo6Tp0TfEkR0rf88NObYb0Pz3pkkbP6liOXJsvq6TryGHBZt28+HK2odx8gtLDsvtF/ILSyg8qBPFIi1Fqw762mT9ZjSPXTeM/73g+OZuSsxKykL8158+46a/zeXt+TmkjZ/E9r1FvJGZzY6CYopLyxj24PvcP3FZ3Nsy7MH3ufjxj+L+PiISGwV9Ddq2Ma49M5Xxlw9h9r0XA7T4h3u/OHN9xfIbmTkVZXe9uZhbJmRWTNucWGXGT7xsjfL0LRE5fFpd0Nc1p76mxxIe060TGx65gof/+5R4NqvRXvjk0HVpmRvDtxZ6/uNw2cLsPRWfLPKWCxt37id7VyFFJWUNes/XM7O547WF0SuKSLNK6pOxNRkVcXIzmewO7p0DUFJW/Qvr1eBOmg6EQs7whz5gR0F4SufQvt24/eIvculJx1R7XVnImb4yl0tO7F3tZO/dwU3ZnvzGaTG1cda6nQxL7UHnDtVPkItI/LS6Hn1r9fCUlQAUHixj4L2TK0IeYOnmvXzvpUymrdhO2vhJPPfR2optz3+8ju+9lMl7EVfmujv5Bw59scRi085Cxjw/i/veWdLITyIi9dVqevQ3n3scA3p2idv++3TvlPDj0uXz8x+espKx5w+k8GAZW/aEp2/e9soCBqWsYV9RCcf3PpJP1uyo9vq73ljEvxZurnHfe4vCXwxvL9jMExG/AYRCzprcAk44tiuLc/Zw1f/7lE/Hj6Rvj85N/fFEWq1WE/Q/v/KkOrf/1+l9uf3iwXXWOb1/D1Zv28f+g5XHtDc8cgVlIef4eycDcFKfbizfurdxDW5mx90zudJ6WchZtT18q+UtVb7QPli+nSWb83ljXk6l8n1FJThwsDREWaj6cNLcDbu47tnPAXj8umEV5xae+2gtt100iLKQc/Yj0/nHzWcx/LijueixGdz/1ZO45MRjaNuIJ66Xn6eoz3UHk5ds5e35Obxw45ca/L7ScnyatYP+R3eh39GVO39FJWX89t1V3HHpYLp2at9MrWt61hLuh56enu6ZmZnRK8ZB+Zz1DY9cEfNrHp68guc+PnTys/y15fu64csDeOnzjU3YyuTz7LfO5KXPN/DZ2p211vnm8H68OiebDm3b8MBVJ3HfO0srtr1/x/n8KmM5n6zZwbdG9OcfszZx1bAv8Idvnl5pH29kZtP/6C6cNbBnxTUEg+6bAsAVp/Th92NOI+RUuno6FHJmZu3gvMG9WJNbQP+juzDk5+8CcEy3jky5/XyOPqIDALv3H+SoIzqwaWchZlQER1FJGWu2F3BKavc6j0PO7kJSj6r+m+bu/QdZmL2Hi4b05u+zNpK3t4g7v3JCDXuozN157uN1dGrXhu+cc1zU+pH2FZWwKDufcwe3jHtDARSXltHGjPZt21BSFsIdQu4s2ZzPpMVbGX/5EDq1r/85n/L/q+sfHl3pC3/CZxt4YOIyvn/+QG698Hh27j/I8Smx3wl3b1EJ7tC986EviS17DlAW8mpfKk3BzOa5e3rUegr6+gf9rzKW8+LM9Vx7ZirXnJHKl4/vWWlf3zk7jb99tgGA0/r1YGHE3Srl8OjbozObg2EnCE+PfXXOplrrX3tmKm/Oy6FHl/YVD4WJ5oUb0rnlpcyKLyQIDxGWhbzi77/nER246Zw0Hnt/NdeckcryrXtZsXUvx3brxLa94d+Mrjy1D3ePGkL/nl34fO1OvvnnWRx9RAd27T/ItP+7oNI1CSldO/Kn68+gLOQ8MXU1c9bvYt7PLmH9jv1cG/x2VG7ZL0dx8gPv8bMrTqTf0V3odWT4y+mkPt0xg/FvLWbEwJ587fS+vDhzPY+/v4ryX7zuGnUC3/hSP3777kq+nt6Pwb278uh7KzmqS3t+NHIwHdu1IXPjbn7w8nzGnjeQLfkHGPqF7pS5U1hcyqQlW7n1wuO5+83F7Cg4yPT/uwAzY+LCLazctpebzjmO7p3bs2lXIb27dmRvUQnHpxzJd/82l8euG8bSzflMW5nL1OXbOaJDWx699lR+nbGCbXuLSOnakbx9xUD4/9eBg2Ws2r6PF25IJ2d3IW3aGPf/O3y9yIs3ptOlQzscZ9f+g1xxSh/KQl7xZd+5fVvuvuwEPlyVx3VnpvLrScvZvre40nF86bvDmb4ylzsu/SKlZSFWbN1HQXEpR3Rsy9LNe3n03ZV877zjSOnakYcmh8+FLX9wFB+syKUsFOKO1xYB8O/bziGt5xFs21vEryct5+zje/G/Fwxs1BXtCvoYNSTon562hsenrubx64ZxzZmpFeVf++OnLMzew83nHseLM9dzWr8evPODsxn+0DTy9hVXlIuIlFv+4Ci6dGjYKHqsQd/qZ93M+OmFTPrxufV6zfcvOJ5HrzmF/zq9b6XyL/ToBEC7YPw4FNx/5nfXnsqQY7sy/vIh9Xqft279crWy34+JbSqjiCSGH76yIO7v0eqDPq3XEZz8hbrHUavq0K4N3/hSf9pUOSE4sFd4LO/0/kcBh66mvfCE3rz7k/NpX8MN007s061i+eIhvfn9mNMYmHIEaT27cOaAo/nPD8/lkhN7V9S5+rS+1fZxdjB0VJuqt17uGtzj5+IhvavVHdjriIrlZb8cVed+RaTxvj1iQNzfI+rvC2bWCfgY6BjUf9PdHzCzl4F0oASYA3zf3UssPOD0e2A0UAh8x93nx+sDtCQ/uWQwIwb25NzBveocCurcvi2Pf30YP3h5PuXfFUcf0YEXvxOe0REZ5qekduerw77ABytyue2i8L13Zo67iHMfPfQYwQe+enKNz6T9enoqr2fm0K1z5dkDFw3pzcRFW2jX9tAXVfk484NXD+VbL85m8o/P44iO7fhS2lHM3bC7ot5p/XrwyvfO4if/XMj7yw/dF//MAUdRXFrG0s3h2UYrHryME+9/t1qbHrtuGD99YxH/c1Z/7vrKCZSUhRj+0LSK7WcddzSz1+/ii8ccyf8M788v/rO8xmP46fiRnPPIdJ74+jDufH1RjXUA1j40mq88+VHF7Z//dP0Z/ODlyv8cn7n+DMa/vYQpt5/HbyavYNLirfz2mlP5+pf68eNXFzBx0aHbRow6+RieuT58dfXAYJbVuodG89j7q/jTjLUVx/LnV57ESfcfujPquz85j0EpR/Louys5rd9R7NpfzM//vYwXbkhn9vqd/PmTQ0N6i3/xFX70ygI+Wp0HwEd3Xci+olKufHomAI9ecwq9u3Zi+94ixgzvzz/nbOLY7p248ITeLN+yl15dO/Dk1NUUlYR4Z8Fmptx+HgN6duHDlXmcfXxPTv/V1BqP1WUnH8u7NTzJrPwcwrIt+dz6cvX/yr+95lTufmsxj103jPZtjfMHp3BUcLK6qlnrdrIkJ5+bzkkjK6+Ay576BAgPnZYPo773k/M54diuPDNjLQXFJdw1agjZuwo5L+LRmSt/dRmd2reltCzEoPum0KVDWwzI/NmldGzXhl/8ZxmnpvbgnEE92V9cxtwNu/jm8P6UhZzcfUW8t3Rbxb+tC09I4WdXnMgb83J47qN1tG9rrP715RQeLMOBoQ+8x3G9juDDn15Y8f5ff/Zz5mzYxWtjRzB9VS4XndCbEQN7VnyGdQ+NZuW2fcxat5Pe3Tpy5alfqHht5Ay9jB+dy9C+9etoNoi71/kDGHBksNwemA2MIBzkFvy8Ctwa1BkNTAnKRwCzo73HmWee6a3FroJi33vgoC/K3u0DxmX4FX/42DfvLvQ9hQfrfF1ZWajS+tAH3vUB4zLc3X3rngM+YFyG//T1hf7E+6t8wLgMHzAuw0OhkJeWhbyopNTHvbnI567f6dvyD/iPXpnvA8Zl+ITP1vugeyf5lCVban3f6/88yweMy/Dxby3yTTv3e2Fxqbu7Z27Y5YPvm+wPTV7uA8Zl+P7iEt9VUOwDxmX4NX/61ItLyiraMWBchs9au6PifeZv3OWh0KHPsy3/gJ/98DRP//XUau8/8rEPfcC4DF+fV1Cxr1N/8V6lOjm7C/2WCXN98+5Cn75ie0W9TTv3V9TZvb/Yt+UfcHf3d+bn+E9fX+ibdu73iQs313nc3d0/XZNXsc9/LcipKH9/2TZfn1dQsf5mZrYPGJfhD/5nmbu7r962t9LfRW1CoZBf8NvpfvPf5vq8jbsqymev2+kfr86tWJ+0eIvPWJVb0y7qpbxNY1+a619/9jOfvHiLz163s2L73PU7/Yn3V3lW7j7fHhwzd/eiklIfMC7D/zlno/9l5jofMC5K5UJyAAAG10lEQVTDr33m00a1ZeA9kyr+HW/ZU1jp/ao6cDD8/n+dua5R71mXJTl7Kv6dlHsjM9u37CmsVLZ1zwH/04dZ1f5ey49tNKc/+H5M9aIBMj1Kvrp79KD3yqHfBZgPnFWl/A7gN8Hyc8A3I7atAvrUtd/WFPTltuWHw/n3H6xu0Ouzd+33aSu2Vayv3rbXD5aWubv7hM/W+/i3FtX62h+/Gg76d+bn1FqnXHnQf9SAgPlkdZ7vKiiOqW5tQbg+r8AfnbLCQ6GQD70//OW2e3/t+ywuKfOT73+3UiA3hbKyUNTPUlJa5r//YLUXFJVUlC3YtNufntawv+N4ufSJGY0OmcmLt/iAcRn+7IysRu1nbe4+/8+i6F+2iSLWoN9TeLDaF0pDNGnQA22BhUAB8GiVbe2D8D8vWM8Azo3YPg1Ir2v/rTHo3cO9+6o99cPhrXnhnueyzflR6978t7k+YFyGf7I67zC0rG7b8w/44uw9zd2MhLezoNjnR/zm0BChUMjfW7rVS5vh329L9rN3ljRJTz1WsQZ9vaZXmlkP4B3gR+6+NCj7M7Df3X8SrE8CHnb3mcH6NOBud59XZV9jgbEA/fv3P3PjRl1gdDjlF5bQvUv0K/92FBTz10/X83+XnlDt5LOINK+4TK909z3ADOCy4E0eAFKAOyOq5QCRD15NBardBN3dn3f3dHdPT0lJqU8zpAnEEvIAvY7syF2jhijkRRJY1KA3s5SgJ4+ZdQYuAVaa2S3AKMLj8ZHPp5sI3GBhI4B8d98ah7aLiEgMYrkcqw8wwczaEv5ieN3dM8ysFNgIfB5cwvu2uz8ITCY88yaL8PTKm+LSchERiUnUoHf3xcDpNZTX+NrgBMFtjW+aiIg0hVZ/ZayISLJT0IuIJDkFvYhIklPQi4gkOQW9iEiSaxEPHjGzPMJTNRuiF1D9SdWtl45HZToeh+hYVJYMx2OAu0e94rRFBH1jmFlmLJcAtxY6HpXpeByiY1FZazoeGroREUlyCnoRkSSXDEH/fHM3oIXR8ahMx+MQHYvKWs3xSPgxehERqVsy9OhFRKQOCR30ZnaZma0ysywzG9/c7YkXM/uLmeWa2dKIsqPNbKqZrQn+PCooNzP7Q3BMFpvZGRGvuTGov8bMbmyOz9JYZtbPzD40sxVmtszMbg/KW93xMLNOZjbHzBYFx+KXQflxZjY7+FyvmVmHoLxjsJ4VbE+L2Nc9QfkqMxvVPJ+oaZhZWzNbYGYZwXqrPh5A/Z4Z25J+CD/ecC0wEOgALAJOau52xemzng+cASyNKPstMD5YHk/wiEdqeTg7cDSwLvjzqGD5qOb+bA04Fn2AM4LlrsBq4KTWeDyCz3RksNwemB18xteBMUH5s8CtwfIPgGeD5THAa8HyScH/n47AccH/q7bN/fkacVzuBF4BMoL1Vn083D2he/TDgSx3X+fuB4F/Alc3c5viwt0/BnZVKb4amBAsTwC+FlH+kofNAnqYWR/CD4mZ6u673H03MJXgSWGJxN23uvv8YHkfsALoSys8HsFnKghW2wc/DowE3gzKqx6L8mP0JnCxhR8mcTXwT3cvdvf1hJ8lMfwwfIQmZ2apwBXAC8G60YqPR7lEDvq+QHbEek5Q1loc48GTu4I/ewfltR2XpDtewa/apxPuybbK4xEMUywEcgl/Wa0F9rh7aVAl8nNVfOZgez7QkyQ5FoGngLuB8qfe9aR1Hw8gsYO+poeYagpR7cclqY6XmR0JvAX8xN331lW1hrKkOR7uXubupxF+NvNw4MSaqgV/JvWxMLMrgVx3nxdZXEPVVnE8IiVy0Mf0EPIktj0YgiD4Mzcor+24JM3xMrP2hEP+ZXd/OyhutccDwN33ADMIj9H3MLPyJ8BFfq6Kzxxs7054SDBZjsU5wFVmtoHwUO5Iwj381no8KiRy0M8FBgdn1DsQPpkysZnbdDhNBMpnitwI/DuivKaHs78HfMXMjgpmpHwlKEsowRjqi8AKd38iYlOrOx5mlmJmPYLlzsAlhM9ZfAhcG1SreizKj9G1wHQPn32cCIwJZqEcBwwG5hyeT9F03P0ed0919zTCeTDd3a+nlR6PSpr7bHBjfgjPqFhNeFzyvuZuTxw/56vAVqCEcG/jZsJjidOANcGfRwd1DfhjcEyWAOkR+/ku4RNLWcBNzf25GngsziX8a/RiYGHwM7o1Hg/gVGBBcCyWAvcH5QMJB1MW8AbQMSjvFKxnBdsHRuzrvuAYrQIub+7P1gTH5kIOzbpp9cdDV8aKiCS5RB66ERGRGCjoRUSSnIJeRCTJKehFRJKcgl5EJMkp6EVEkpyCXkQkySnoRUSS3P8HKIQyQhIRYmgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(approx.hist)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To demonstrate that ADVI works for large dataset with mini-batch, let's create 100,000 samples from the same mixture distribution. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-6, 6)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_samples = 100000\n",
    "\n",
    "zs = np.array([rng.multinomial(1, ps) for _ in range(n_samples)]).T\n",
    "xs = [z[:, np.newaxis] * rng.multivariate_normal(m, np.eye(2), size=n_samples)\n",
    "      for z, m in zip(zs, ms)]\n",
    "data = np.sum(np.dstack(xs), axis=2)\n",
    "\n",
    "plt.figure(figsize=(5, 5))\n",
    "plt.scatter(data[:, 0], data[:, 1], c='g', alpha=0.5)\n",
    "plt.scatter(ms[0, 0], ms[0, 1], c='r', s=100)\n",
    "plt.scatter(ms[1, 0], ms[1, 1], c='b', s=100)\n",
    "plt.xlim(-6, 6)\n",
    "plt.ylim(-6, 6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "MCMC took 55 seconds, 20 times longer than the small dataset. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "with pm.Model() as model:\n",
    "    mus = [MvNormal('mu_%d' % i, mu=pm.floatX(np.zeros(2)), tau=pm.floatX(0.1 * np.eye(2)), shape=(2,))\n",
    "           for i in range(2)]\n",
    "    pi = Dirichlet('pi', a=pm.floatX(0.1 * np.ones(2)), shape=(2,))\n",
    "    xs = DensityDist('x', logp_gmix(mus, pi, np.eye(2)), observed=data)\n",
    "    \n",
    "    start = find_MAP()\n",
    "    step = Metropolis()\n",
    "    trace = sample(1000, step, start=start)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Posterior samples are concentrated on the true means, so looks like single point for each component. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-6, 6)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(5, 5))\n",
    "plt.scatter(data[:, 0], data[:, 1], alpha=0.5, c='g')\n",
    "mu_0, mu_1 = trace['mu_0'], trace['mu_1']\n",
    "plt.scatter(mu_0[-500:, 0], mu_0[-500:, 1], c=\"r\", s=50)\n",
    "plt.scatter(mu_1[-500:, 0], mu_1[-500:, 1], c=\"b\", s=50)\n",
    "plt.xlim(-6, 6)\n",
    "plt.ylim(-6, 6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For ADVI with mini-batch, put theano tensor on the observed variable of the ObservedRV. The tensor will be replaced with mini-batches. Because of the difference of the size of mini-batch and whole samples, the log-likelihood term should be appropriately scaled. To tell the log-likelihood term, we need to give ObservedRV objects ('minibatch_RVs' below) where mini-batch is put. Also we should keep the tensor ('minibatch_tensors'). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "minibatch_size = 200\n",
    "# In memory Minibatches for better speed\n",
    "data_t = pm.Minibatch(data, minibatch_size)\n",
    "\n",
    "with pm.Model() as model:\n",
    "    mus = [MvNormal('mu_%d' % i, mu=pm.floatX(np.zeros(2)), tau=pm.floatX(0.1 * np.eye(2)), shape=(2,))\n",
    "           for i in range(2)]\n",
    "    pi = Dirichlet('pi', a=pm.floatX(0.1 * np.ones(2)), shape=(2,))\n",
    "    xs = DensityDist('x', logp_gmix(mus, pi, np.eye(2)), observed=data_t, total_size=len(data))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run ADVI. It's much faster than MCMC, though the problem here is simple and it's not a fair comparison. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Average Loss = 653.72: 100%|██████████| 1500/1500 [00:02<00:00, 717.55it/s]\n",
      "Finished [100%]: Average Loss = 653.57\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 6.42 s, sys: 1.05 s, total: 7.47 s\n",
      "Wall time: 31.8 s\n"
     ]
    }
   ],
   "source": [
    "# Used only to write the function call in single line for using %time\n",
    "# is there more smart way?\n",
    "def f():\n",
    "    approx = pm.fit(n=1500, obj_optimizer=pm.adagrad(learning_rate=1e-1), model=model)\n",
    "    means = approx.bij.rmap(approx.mean.eval())\n",
    "    sds = approx.bij.rmap(approx.std.eval())\n",
    "    return means, sds, approx.hist\n",
    "\n",
    "%time means, sds, elbos = f()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The result is almost the same. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-6, 6)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from copy import deepcopy\n",
    "\n",
    "mu_0, sd_0 = means['mu_0'], sds['mu_0']\n",
    "mu_1, sd_1 = means['mu_1'], sds['mu_1']\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(5, 5))\n",
    "plt.scatter(data[:, 0], data[:, 1], alpha=0.5, c='g')\n",
    "plt.scatter(mu_0[0], mu_0[1], c=\"r\", s=50)\n",
    "plt.scatter(mu_1[0], mu_1[1], c=\"b\", s=50)\n",
    "plt.xlim(-6, 6)\n",
    "plt.ylim(-6, 6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The variance of the trace of ELBO is larger than without mini-batch because of the subsampling from the whole samples. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(elbos);"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  },
  "latex_envs": {
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 0
  },
  "nav_menu": {},
  "toc": {
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 6,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
